module.exports = (app) => {
  const { dict, constant } = app.config
  const { Schema, createModel, getModelName, pre } = app.jax.mongoose
  const modelName = getModelName(__filename)

  const schema = new Schema({
    title: String, // 标题
    cover: String, // 封面图

    categoryId: Schema.Types.ObjectId, // 内容分类

    type: String, // 内容类型（image：图片、text：文本、html：富文本、link：外链、path：路径）
    content: String, // 内容
    html: String, // HTML
    images: [String], // 内容图片
    link: String, // 链接
    path: String, // 路径

    rank: { type: Number, set: (value) => Number(value) || null }, // 序号
    isTop: { type: Boolean, default: false }, // 是否置顶，序号设置后自动置顶

    // likeCount: { type: Number, default: 0 }, // 点赞数

    app: { type: Number, default: 0 }, // 应用类型

    pv: { type: Number, default: 0 }, // 浏览量
    uv: { type: Number, default: 0 }, // 独立访客

    key: String, // 文章标识
  })

  // 修改
  schema.pre(['updateOne', 'findOneAndUpdate', 'updateMany'], function () {
    const data = this.getUpdate()
    pre.getRank(data)
  })

  // 新增
  schema.pre('save', function () {
    pre.getRank(this)
  })

  // 所属板块
  // schema.virtual('appDesc').get(function () {
  //   return dict.articleApp[this.app] || '未知'
  // })

  const Model = createModel(modelName, schema)

  return Model
}
